共计 1132 个字符,预计需要花费 3 分钟才能阅读完成。
实验内容:打开图像,显示图像,灰度化,二值化,存储图像,缩放图像,观察其分辨率,降低灰度分辨率两种模式,观察图像变化
打开图像
import cv2 as cv
img = cv.imread('LenaRGB.bmp')
img = cv.cvtColor(img, cv.COLOR_BGR2RGB)
显示图像
import matplotlib.pyplot as plt
plt.imshow(img)
灰度化
gray_img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# show_all(img, gray_img)
plt.imshow(gray_img, cmap='gray')
二值化
_, binary_img = cv.threshold(gray_img, 127, 255, cv.THRESH_BINARY)
plt.imshow(binary_img, cmap='gray')
存储图像
cv.imwrite('Lena_binary.png', binary_img)
True
缩放图像 观察分辨率
plt.imshow(img)
img.shape
(512, 512, 3)
row, col, _ = img.shape
resize_img = cv.resize(img, (int(row / 2), int(col / 2)))
plt.imshow(resize_img)
resize_img.shape
(256, 256, 3)
降低灰度分辨率
def reduce_intensity_levels(img, level):
img = cv.copyTo(img, None)
for x in range(img.shape[0]):
for y in range(img.shape[1]):
si = int(img[x, y])
ni = int(level * si / 255 + 0.5) * (255 / level)
img[x, y] = ni
return img
8 级
gray_img_level8 = reduce_intensity_levels(gray_img, 7)
plt.imshow(gray_img_level8, cmap='gray')
4 级
gray_img_level4 = reduce_intensity_levels(gray_img, 3)
plt.imshow(gray_img_level4, cmap='gray')
2 级
gray_img_level2 = reduce_intensity_levels(gray_img, 1)
plt.imshow(gray_img_level2, cmap='gray')
正文完